﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Grupo2.Persistencia;
using Grupo2.Dominio;

namespace Grupo2.Pruebas
{
    [TestFixture]
    public class TestEstudioAcademicoDAO
    {
        [Test]
        public void TestCrearEstudioAcademico()
        {
            //Creamos un objeto nuevoEstudioAcademico del tipo EstudioAcademico
            EstudioAcademico nuevoEstudioAcademico = new EstudioAcademico();

            //Asignamos valores a los atributos al objeto nuevoEstudioAcademico
            nuevoEstudioAcademico.Id_Estudio_Academico = 1;
            nuevoEstudioAcademico.Postulante.Id_Postulante = 1;
            nuevoEstudioAcademico.Nombre_Institucion = "TECSUP";
            nuevoEstudioAcademico.Tipo_Estudio = "MASTER";
            nuevoEstudioAcademico.Fecha_Inicio = DateTime.Parse("05/05/2009");
            nuevoEstudioAcademico.Fecha_Fin = DateTime.Parse("05/05/2010");
            nuevoEstudioAcademico.Grado_Obtenido = "Titulado";

            //En este objeto cargaremos los valores
            EstudioAcademicoDAO EstudioAcademicoDAO = new EstudioAcademicoDAO();

            //Creamos un objeto EstudioAcademicoCreado del tipo EstudioAcademico y mediante el método CrearEstudioAcademico definido en
            //la clase EstudioAcademicoDAO.cs hacemos luego que EstudioAcademicoCreado reciba los datos del objeto EstudioAcademicoDAO
            EstudioAcademico EstudioAcademicoCreado = EstudioAcademicoDAO.CrearEstudioAcademico(nuevoEstudioAcademico);

            //Con esto verificamos que se haya creado el registro en la BD
            Assert.NotNull(EstudioAcademicoCreado);
        }

        [Test]
        public void TestObtenerEstudioAcademico()
        {
            Int32 Id_Estudio_Academico_Buscado = 1;

            //Creamos un objeto del tipo EstudioAcademicoDAO
            EstudioAcademicoDAO estudioAcademicoDAO = new EstudioAcademicoDAO();

            //Creamos un objeto EstudioAcademicoExistente y le asignamos los datos obtenido con el método ObtenerEstudioAcademico
            //que esta definido en la clase EstudioAcademicoDAO.cs
            EstudioAcademico estudioAcademicoExistente = estudioAcademicoDAO.ObtenerEstudioAcademico(Id_Estudio_Academico_Buscado);

            //Con esto verificamos sí hemos el estudioAcademico buscado se ha encontrado
            Assert.AreEqual(Id_Estudio_Academico_Buscado, estudioAcademicoExistente.Id_Estudio_Academico);

            //Con esto verificamos que el campo Nombre_Institucion no este vacio
            Assert.NotNull(estudioAcademicoExistente.Nombre_Institucion);
        }

        [Test]
        public void ModificarEstudioAcademico()
        {
            String Nombre_Institucion_modificado = "CIBERTEC";
            EstudioAcademicoDAO estudioAcademicoDAO = new EstudioAcademicoDAO();

            EstudioAcademico estudioAcademicoExistente = estudioAcademicoDAO.ObtenerEstudioAcademico(1);
            estudioAcademicoExistente.Nombre_Institucion = Nombre_Institucion_modificado;

            EstudioAcademico estudioAcademicoModificado = null;

            Assert.Catch<Exception>(delegate
            {
                estudioAcademicoModificado = estudioAcademicoDAO.CrearEstudioAcademico(estudioAcademicoExistente);
            });

        }


        [Test]
        public void TestEliminarEstudioAcademico()
        {
            Int32 Id_Estudio_Academico_A_Elminar = 1;

            EstudioAcademicoDAO estudioAcademicoDAO = new EstudioAcademicoDAO();

            estudioAcademicoDAO.EliminarEstudioAcademico(Id_Estudio_Academico_A_Elminar);

            EstudioAcademico existe = estudioAcademicoDAO.ObtenerEstudioAcademico(Id_Estudio_Academico_A_Elminar);

            Assert.IsNull(existe);
        }  
    }
}